package es.mfp.practicos.util;

import java.math.BigDecimal;

public final class CurrencyUtils {

	/**
	 * Aplica los impuestos al valor.
	 * 
	 * @param neto
	 * @return valor con impuestos aplicados
	 */
	public static Double conIva(final Double iva, final Double neto) {

		if (neto == null) {
			throw new NullPointerException(
					"El valor a obtener con impuestos no puede ser nulo");
		}
		return roundToDouble(neto + neto * iva);
	}

	/**
	 * Redondeamos hacia arriba con dos cifras decimales
	 * 
	 * @param d
	 * @return
	 */
	public static Double roundToDouble(Double d) {

		if (d == null) {
			return null;
		}
		BigDecimal bd = new BigDecimal(d);
		bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);

		return bd.doubleValue();
	}

	/**
	 * Redondeamos la parte entera
	 * 
	 * @param d
	 * @return
	 */
	public static Integer roundToInteger(Double d) {

		if (d == null) {
			return null;
		}
		BigDecimal bd = new BigDecimal(d);
		bd = bd.setScale(0, BigDecimal.ROUND_HALF_UP);

		return bd.intValue();
	}

}
